package ClientAdmin;

import java.util.ArrayList;
import java.util.GregorianCalendar;
import java.util.Iterator;
import java.util.Scanner;

import Serveur.Serveur;

import Both.Trajet;
import Both.Transport;
import Both.TypeTransport;
import Both.Ville;

/**
 * Le client Admin est charg� de modifier la liste des Transports et des
 * Trajets.
 * 
 * @author user
 * 
 */
public class ClientAdmin {
    // Uniquement utilis� pour les test
    private Serveur serveur;

    public final static String MDP = "mdp";

    /**
     * Constructeur par default
     * 
     * @param serv
     */
    public ClientAdmin(Serveur serv, String mdp)
            throws IllegalArgumentException {
        if (!mdp.equals(MDP)) {
            throw new IllegalArgumentException();
        }
        serveur = serv;
    }

    /**
     * cr�ation d'un classe DemandeModificationTransport
     */
    public DemandeModificationTransport demandeModTrans(Transport old,
            Transport newTrans, TypeTransport type, int num, int capacite) {
        // Verifier les parametres
        if (newTrans == null) {
            return null;
        }

        if (newTrans != null && old != null) {
            return new DemandeModificationTransport(old, newTrans);
        }

        // si le nouveau transport est null
        if (old == null) {
            return new DemandeModificationTransport(newTrans, type, num,
                    capacite);
        }

        return null;
    }

    /**
     * cr�ation d'un classe DemandeModificationTrajet
     */
    public DemandeModificationTrajet demandeModTrajet(Trajet oldtraj,
            Trajet newtraj, GregorianCalendar dateDepart,
            GregorianCalendar dateArrive, int placeAccupe, Transport trans,
            Ville villeDepart, Ville villeArrive, double distance) {
        if (newtraj == null) {
            return new DemandeModificationTrajet(oldtraj, dateDepart,
                    dateArrive, placeAccupe, trans, villeDepart, villeArrive,
                    distance);
        }
        if (newtraj != null && oldtraj != null) {
            return new DemandeModificationTrajet(oldtraj, newtraj);
        }
        if (dateArrive == null && dateDepart == null && villeArrive == null
                && villeDepart == null && trans == null && oldtraj == null) {
            return new DemandeModificationTrajet(null, newtraj);
        }

        return null;
    }
}
